package com.qlk.test.vorder.service;

import java.util.List;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;

import com.qlk.vorder.domain.OrderNote;
import com.qlk.vorder.domain.query.OrderNoteQuery;
import com.qlk.vorder.service.OrderNoteService;
import com.qlk.vorder.utils.exceptions.ExistedException;
import com.qlk.common.utils.page.PageUtil;
import com.qlk.test.base.BaseTransactionTestCase;
import com.qlk.test.base.TestConstants;

/**
 * OrderNoteService单元测试
 * 
 * @author zhaoyanan
 * @version 2016-7-28 14:14:01
 * 
 */
public class OrderNoteServiceTestCase extends BaseTransactionTestCase {

	/** 不存在的 ID-删改查-失败的测试用例 */
	private static final long TEST_NOT_EXIST_ID = -2L;

	/** 默认 存在的ID-删改查-成功的测试用例,数据库需存在改ID对应的数据 */
	private static final long TEST_DEFAULT_EXIST_ID = 1L;

	@Autowired
	private OrderNoteService orderNoteService;

	/**
	 * 测试插入数据-成功
	 */
	@Test
	public void testInsert() {
		Assert.notNull(orderNoteService);
		OrderNote orderNote = new OrderNote();
		String orderid = null; // TODO 初始化
		orderNote.setOrderid(orderid);
		String content = null; // TODO 初始化
		orderNote.setContent(content);
		orderNote.setCreateName(TestConstants.UER_NAME);
		boolean result = orderNoteService.insert(orderNote);
		Assert.isTrue(result);
	}

	/**
	 * 测试插入数据-失败（重复、错误、长度越界等）
	 */
	@Test
	public void testInsertFailure() {
		Assert.notNull(orderNoteService);
		OrderNote orderNote = new OrderNote();
		String orderid = null; // TODO 初始化// 已经存在的
		orderNote.setOrderid(orderid);
		String content = null; // TODO 初始化// 已经存在的
		orderNote.setContent(content);
		orderNote.setCreateName(TestConstants.UER_NAME);
		ExistedException ex = null;
		try {
			boolean result = orderNoteService.insert(orderNote);
			Assert.isTrue(!result);
		} catch (ExistedException e) {
			ex = e;
		}
		Assert.notNull(ex);
	}

	/**
	 * 测试删除数据-成功
	 */
	@Test
	public void testDelete() {
		Assert.notNull(orderNoteService);
		OrderNote orderNote = new OrderNote();
		orderNote.setId(TEST_DEFAULT_EXIST_ID);
		String orderid = null; // TODO 初始化
		orderNote.setOrderid(orderid);
		String content = null; // TODO 初始化
		orderNote.setContent(content);
		orderNote.setCreateName(TestConstants.UER_NAME);
		boolean result = orderNoteService.delete(orderNote);
		Assert.isTrue(result);
	}

	/**
	 * 测试删除数据-失败（ID不存在等）
	 */
	@Test
	public void testDeleteFailure() {
		Assert.notNull(orderNoteService);
		OrderNote orderNote = new OrderNote();
		orderNote.setId(TEST_NOT_EXIST_ID);// 不存在的ID
		String orderid = null; // TODO 初始化
		orderNote.setOrderid(orderid);
		String content = null; // TODO 初始化
		orderNote.setContent(content);
		orderNote.setCreateName(TestConstants.UER_NAME);
		boolean result = orderNoteService.delete(orderNote);
		Assert.isTrue(!result);
	}

	/**
	 * 测试修改数据-成功
	 */
	@Test
	public void testUpdate() {
		Assert.notNull(orderNoteService);
		OrderNote orderNote = new OrderNote();
		orderNote.setId(TEST_DEFAULT_EXIST_ID);
		String orderid = null; // TODO 初始化
		orderNote.setOrderid(orderid);
		String content = null; // TODO 初始化
		orderNote.setContent(content);
		orderNote.setCreateName(TestConstants.UER_NAME);
		boolean result = orderNoteService.update(orderNote);
		Assert.isTrue(result);
	}

	/**
	 * 测试修改数据-失败（ID不存在等）
	 */
	@Test
	public void testUpdateFailure() {
		Assert.notNull(orderNoteService);
		OrderNote orderNote = new OrderNote();
		orderNote.setId(TEST_NOT_EXIST_ID);// 不存在的ID
		String orderid = null; // TODO 初始化
		orderNote.setOrderid(orderid);
		String content = null; // TODO 初始化
		orderNote.setContent(content);
		orderNote.setCreateName(TestConstants.UER_NAME);
		boolean result = orderNoteService.update(orderNote);
		Assert.isTrue(!result);
	}

	/**
	 * 测试依据ID查询数据-成功
	 */
	@Test
	public void testQuery() {
		Assert.notNull(orderNoteService);
		OrderNote c = orderNoteService.getOrderNoteById(TEST_DEFAULT_EXIST_ID);
		Assert.notNull(c);
	}

	/**
	 * 测试依据ID查询数据-失败（ID不存在等）
	 */
	@Test
	public void testQueryFailure() {
		Assert.notNull(orderNoteService);
		OrderNote c = orderNoteService.getOrderNoteById(TEST_NOT_EXIST_ID);// 不存在的ID
		Assert.isNull(c);
	}

	/**
	 * 测试分页查询数据-成功
	 */
	@Test
	public void testQueryWithPage() {
		Assert.notNull(orderNoteService);
		OrderNoteQuery queryBean = null;
		PageUtil pageUtil = null;
		List<OrderNote> list = orderNoteService.queryOrderNoteListWithPage(queryBean, pageUtil);
		Assert.notEmpty(list);
		logger.info("list size = " + list.size());
	}

	/**
	 * 测试查询数据集合-成功
	 */
	@Test
	public void testQueryList() {
		Assert.notNull(orderNoteService);
		OrderNoteQuery queryBean = new OrderNoteQuery();
		String orderid = null; // TODO 初始化
		queryBean.setOrderid(orderid);
		String content = null; // TODO 初始化
		queryBean.setContent(content);
		List<OrderNote> list = orderNoteService.queryOrderNoteList(queryBean);
		Assert.notEmpty(list);
		logger.info("list size = " + list.size());
	}
}
